括号匹配问题"{""["

来源:百度知道 编辑:UC知道 时间:2024/06/19 07:50:11
#include <stdio.h>
#include <errno.h>
typedef struct{
char data[20];
int top;
}seqstack,*seqstackptr;
void initstack(seqstackptr sp)
{sp->top=0;}
int emptystack(seqstackptr sp)
{return sp->top==0;}
int fullstack(seqstackptr sp)
{return sp->top>=20;}
void push(seqstackptr sp,char x)
{if (fullstack(sp))
Error("stack full");
sp->data[sp->top++]=x;
}
char pop(seqstackptr sp)
{if (emptystack(sp))
Error("stack empty");
return sp->data[--sp->top];
}
main()
{char a[20];seqstack b;char m;int i;
initstack(&b);
getch(a);
for(i=0;a[i];i++)
{if(a[i]=='{'||'[')
push(&b,a[i]);
if(a[i]=='}'||']')
{m=pop(&b); if(m!==a[i]-2) Error("wrong");}
}
if (emptystack(&b)) printf("right");
else printf("wrong");

m!==a 不等于 应当是 != 多写了一个 =

条件:
if( a[i]== '{'|| '[') 应写成 if( a[i]=='{'|| a[i]=='[')
if( a[i]=='}' || ']') 应写成 if( a[i]=='}' || a[i]==']')
否则语法没问题,但意思不对
Error 号码 函数 好像不对,(我的编译器没有此函数)改打印信息,接 #include <errno.h> 添一行:
#define Error printf
就能打了。

你的Error()是什么函数阿。如果是#include <errno.h> 里的函数的话,你可能调用不合法把。或者你自己订一个功能一样的函数就可以了

#include <stdio.h>
#include <errno.h>
#include <conio.h>

typedef struct
{
char data[20];
int top;
}seqstack,*seqstackptr;

void initstack(seqstackptr sp)
{
sp->top=0;
}

int emptystack(seqstackptr sp)
{
return sp->top==0;
}

int fullstack(seqstackptr sp)
{
return sp->top>=20;
}

void push(seqstackptr sp,char x)
{
if (fullstack(sp))
Error("stack ful